const {ccclass, property} = cc._decorator;

@ccclass
export default class JumpNumber extends cc.Component {


    private startAnimation(node: cc.Node) {
        //cc.log("开始动画")
        let startPos = node.position;
        
        //将这个伤害跳字 使用cc.tween 往上然后做抛物线运动 随机左右方向，同时下落时逐渐半透明消失，该动作为1s
        // 随机生成左右方向的偏移量
        let range = 20
        let dir = Math.random() < 0.5 ? -1 : 1;
        let xOffset = (Math.random() * range + 80) *dir; // 偏移范围
        let yOffset = Math.random() * range; // 上升高度
        // 使用 cc.tween 实现抛物线运动
        node.scale = 1.5;
        cc.tween(node)
            .by(0.1,{scale:-0.5})
            .by(0.4, { position: cc.v3(xOffset*0.3, 50), opacity: -10}, { easing: 'quadOut' }) // 上升过程 
            .by(0.4, { position: cc.v3(xOffset, -40), opacity: -220 }) // 下降过程
            .call(() => {
                node.destroy();
            })
            .start();

    }

    // 生成漂字的方法，接收位置和数值作为参数
    createJumpNumber(position: cc.Vec2, value: number) {
        // 加载预制体
        cc.resources.load("prefabs/LabelNode", cc.Prefab, (err, prefab) => {
            if (err) {
                cc.error(err);
                return;
            }
            // 实例化预制体
            let floatNumberNode = cc.instantiate(prefab);
            // 获取当前场景中的Canvas节点（可根据实际需求替换为具体的stageNode等）
            this.node.addChild(floatNumberNode);
            // 获取漂字节点上的Label组件
            let label: cc.Label = floatNumberNode.getComponent(cc.Label);
            if (label) {
                // 设置Label显示的数值
                label.string = value.toString() ;
            }
            // 设置初始位置
            floatNumberNode.setPosition(position);

            // 调整节点顺序，让新的数值在旧的前面显示（通过设置较小的兄弟索引实现）
            let childrenCount = this.node.childrenCount;
            // if (childrenCount > 0) {
            //     floatNumberNode.setSiblingIndex(0);
            // }

            // 开始跳字动画
            this.startAnimation(floatNumberNode);
        });
        

    }
}